package com.biz.primus.ms.payment.channel.allinpay.res;

import com.google.common.collect.Lists;
import lombok.Getter;
import lombok.Setter;

import java.util.Collection;

/**
 * AllInPayH5PayRespVo
 *
 * @author JKLiues
 * @date 2017年11月11日
 */
@Getter
@Setter
public class AllInPayH5PayRespVo extends BaseAllInPayRespVo {
    private static final long serialVersionUID = 2688768946345476548L;

    /**
     * 商户号	30数字串，与提交订单时的商户号保持一致
     */
    private String merchantId;
    /**
     * 网关返回支付结果接口版本	10固定选择值：1.0
     */
    private String version;
    /**
     * 通联订单号	50字符串，通联订单号
     */
    private String paymentOrderId;
    /**
     * 商户订单号	50字符串，与提交订单时的商户订单号保持一致
     */
    private String orderNo;
    /**
     * 商户订单提交时间	14数字串，与提交订单时的商户订单提交时间保持一致
     */
    private String orderDatetime;
    /**
     * 商户订单金额	10整型数字，则单位是分，即10元提交时金额应为1000
     */
    private Integer orderAmount;
    /**
     * 支付完成时间	14日期格式：yyyyMMDDhhmmss，例如：20170716020101
     */
    private String payDatetime;
    /**
     * 订单实际支付金额	10整型数字，以分为单位
     */
    private Integer payAmount;
    /**
     * 扩展字段1	128字符串，与提交订单时的扩展字段1保持一致
     */
    private String ext1;
    /**
     * 扩展字段2	128字符串，与提交订单时的扩展字段2保持一致
     */
    private String ext2;
    /**
     * 处理结果	2	1：支付成功
     * 仅在支付成功时通知商户;。
     * 商户可以通过查询接口查询订单状态;。
     */
    private String payResult;
    /**
     * 错误代码	10	固定为空
     */
    private String errorCode;
    /**
     * 结果返回时间	14	系统返回支付结果的时间，日期格式：yyyyMMDDhhmmss
     */
    private String returnDatetime;
    /**
     * 签名字符串	1024	以上所有非空参数按上述顺序与密钥组合，经加密后生成该值。
     */
    private String signMsg;


    public Collection<String> getSignParams(){
        return Lists.newArrayList(
                "merchantId",
                "version",
                "paymentOrderId",
                "orderNo",
                "orderDatetime",
                "orderAmount",
                "payDatetime",
                "payAmount",
                "ext1",
                "ext2",
                "payResult",
                "errorCode",
                "returnDatetime"
        );
    }
}